import plotly.express as px
import numpy as np
import plotly.graph_objects as go
import networkx as nx
import itertools
import pathpy as pp
import ast
def temporal_walk(tempnet, l=10, start_node=None, end_nodes=[]):
itinerary = []
if start_node is None:
current_node = np.random.choice(tempnet.nodes)
else:
current_node = start_node
itinerary.append(current_node)
steps = 0
for t in tempnet.ordered_times:
prev_node = current_node
# find possible targets in time t
targets = set()
targets.add(False)
for (v, w, time) in tempnet.time[t]:
if v == current_node:
targets.add(w)
# move to random target or stay if False is extracted
if targets:
rand_node = np.random.choice(list(targets))
if (rand_node!=False):
current_node = rand_node
steps += 1
# add currently visited node
if current_node != prev_node:
itinerary.append(current_node)
if steps == l:
break
if current_node in end_nodes :
break
return itinerary
from pathpy.classes.paths import Paths
def paths_from_temporal_walk(network, l, n=100, start_node=None, end_nodes=[]):
"""
Generates n paths of a random walker in the given network
and returns them as a paths object.
Each path has a length of l steps.
Parameters
----------
network: Network, TemporalNetwork, HigherOrderNetwork
The network structure on which the random walks will be simulated.
int: l
The (maximum) length of each random walk path. A path will
terminate if a node with outdegree zero is reached.
int: n
The number of random walk paths to generate.
"""
p = pp.Paths()
for i in range(n):
path = temporal_walk(network, l, start_node, end_nodes)
p.add_path(tuple(path))
return p
file=open(r"C:\Users\Daniele\Desktop\Graph mining\icalp.tg")
max_v=0
for line in file:
a=line.split()
max_v=max(max_v,int(a[0]),int(a[1]))
G=nx.Graph()
G.add_nodes_from(range(1,max_v+1))
file=open(r"C:\Users\Daniele\Desktop\Graph mining\icalp.tg")
for line in file:
a=line.split()
G.add_edge(int(a[0]),int(a[1]))
nx.Graph.number_of_nodes(G)
4669
largest_cc = max(nx.connected_components(G), key=len)
G=G.subgraph(largest_cc)
nx.Graph.number_of_nodes(G)
3458
# TAKE ABOUT 5 MINUTES TO BE COMPUTED
# dict_centrality=nx.algorithms.centrality.betweenness_centrality(G,seed=42)
# f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictCentrality.txt", "w")
# f.write( str(dict_centrality) )
# f.close()
f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictCentrality.txt", "r")
contents = f.read()
dict_centrality = ast.literal_eval(contents)
f.close()
with open(r"C:\Users\Daniele\Desktop\Graph mining\graphs\icalpw\icalpw2021map.txt",'r') as f:
lines = f.readlines()
id_cc=[]
for line in lines:
id_cc.append(int(line))
with open(r"C:\Users\Daniele\Desktop\Graph mining\icalp_id_author.txt",'r') as f:
lines = f.readlines()
dict_names={}
for line in lines:
dict_names[int(line.split(" ")[0])]=line.strip(" 1234567890").replace("\n","")
authors_algorithms=[487,1198,1856,2189,78]
for auth in authors_algorithms:
print(dict_names[auth])
Paul G. Spirakis Piotr Indyk Fedor V. Fomin Dániel Marx Kurt Mehlhorn
authors_formal_methods=[381,944,1625,1240,1333]
for auth in authors_formal_methods:
print(dict_names[auth])
Donald Sannella Anca Muscholl James Worrell 0001 Christel Baier Igor Walukiewicz
authors_networks=[2662,1857,1100,1215,1152]
for auth in authors_networks:
print(dict_names[auth])
Ioannis Chatzigiannakis Mohammad Taghi Hajiaghayi Stefano Leonardi Christos Kaklamanis Michael Mitzenmacher
authors_cryptography=[523,1491,930,1588, 738]
for auth in authors_cryptography:
print(dict_names[auth])
Moti Yung Rafail Ostrovsky Giuseppe Persiano Yuval Ishai Gilles Brassard
authors_chosen=authors_algorithms+authors_formal_methods+authors_networks+authors_cryptography
map_auth_consolidate = {}
for i in range(1,max_v+1):
if (i in authors_algorithms or i in authors_formal_methods or i in authors_networks or i in authors_cryptography):
if (i in authors_algorithms):
map_auth_consolidate[i]=5000
elif (i in authors_formal_methods):
map_auth_consolidate[i]=6000
elif (i in authors_networks):
map_auth_consolidate[i]=7000
else:
map_auth_consolidate[i]=8000
else:
map_auth_consolidate[i]=i
file=open(r"C:\Users\Daniele\Desktop\Graph mining\icalp.tg")
tg=pp.TemporalNetwork()
for line in file:
l=line.split()
u=int(l[0])
v=int(l[1])
time=int(l[2])
if (u in largest_cc and v in largest_cc):
if ( map_auth_consolidate[u] == map_auth_consolidate[v] ):
continue
tg.add_edge(map_auth_consolidate[u],map_auth_consolidate[v],time)
tg.add_edge(map_auth_consolidate[v],map_auth_consolidate[u],time)
print(tg)
Nodes: 3442 Time-stamped links: 18574 Links/Nodes: 5.396281231841952 Observation period: [1972, 2021] Observation length: 49 Time stamps: 48 Avg. inter-event dt: 1.0425531914893618 Min/Max inter-event dt: 1/2
def get_frequencies(tg,l,n,start_node,end_nodes):
prw = paths_from_temporal_walk(tg,l,n,start_node,end_nodes)
count=0
f_algo=0
f_formal=0
f_net=0
f_crypto=0
for l in prw.paths:
for x in prw.paths[l]:
if prw.paths[l][x][1]>0 and int(x[-1]) in end_nodes:
count= count+ prw.paths[l][x][1]
if int(x[-1])==5000:
f_algo= f_algo + prw.paths[l][x][1]
elif int(x[-1])==6000:
f_formal= f_formal + prw.paths[l][x][1]
elif int(x[-1])==7000:
f_net= f_net + prw.paths[l][x][1]
else:
f_crypto= f_crypto + prw.paths[l][x][1]
if count>0:
return (f_algo/count,f_formal/count,f_net/count,f_crypto/count)
else:
return (0,0,0,0)
# TOOK ABOUT 10 HOURS TO BE COMPUTED
# dict_frequency={}
# for auth in authors_algorithms:
# dict_frequency[auth]=(1,0,0,0)
# for auth in authors_formal_methods:
# dict_frequency[auth]=(0,1,0,0)
# for auth in authors_networks:
# dict_frequency[auth]=(0,0,1,0)
# for auth in authors_cryptography:
# dict_frequency[auth]=(0,0,0,1)
# for vertex in [ v for v in largest_cc if v not in authors_chosen ]:
# dict_frequency[vertex]=get_frequencies(tg,l=7,n=3000,start_node=vertex,end_nodes=[5000,6000,7000,8000])
# f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictFrequencies.txt", "w")
# f.write( str(dict_frequency) )
# f.close()
f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictFrequencies.txt", "r")
contents = f.read()
dict_frequency = ast.literal_eval(contents)
f.close()
dict_frequency_2={}
for vertex in largest_cc:
(a,b,c,d)=dict_frequency[vertex]
dict_frequency_2[vertex]=(1 if a>=0.9 else 0, 1 if b>=0.9 else 0,1 if c>=0.9 else 0,1 if d>=0.9 else 0)
aut_classified=[[],[],[],[]]
aut_to_classify=[]
for key,value in dict_frequency_2.items():
if value==(0,0,0,0):
aut_to_classify.append(key)
else:
aut_classified[np.argmax(value)].append(key)
min_cat=min(len(aut_classified[0]),len(aut_classified[1]),len(aut_classified[2]),len(aut_classified[3]))
aut_algo_temp=sorted(aut_classified[0], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[0])-set(aut_algo_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[0]=aut_algo_temp
aut_formal_temp=sorted(aut_classified[1], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[1])-set(aut_formal_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[1]=aut_formal_temp
aut_net_temp=sorted(aut_classified[2], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[2])-set(aut_net_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[2]=aut_net_temp
aut_crypto_temp=sorted(aut_classified[3], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[3])-set(aut_crypto_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[3]=aut_crypto_temp
map_auth_consolidate = {}
for i in range(1,max_v+1):
if (i in aut_classified[0] or i in aut_classified[1] or i in aut_classified[2] or i in aut_classified[3]):
if (i in aut_classified[0]):
map_auth_consolidate[i]=5000
elif (i in aut_classified[1]):
map_auth_consolidate[i]=6000
elif (i in aut_classified[2]):
map_auth_consolidate[i]=7000
else:
map_auth_consolidate[i]=8000
else:
map_auth_consolidate[i]=i
file=open(r"C:\Users\Daniele\Desktop\Graph mining\icalp.tg")
tg=pp.TemporalNetwork()
for line in file:
l=line.split()
u=int(l[0])
v=int(l[1])
time=int(l[2])
if (u in largest_cc and v in largest_cc):
if ( map_auth_consolidate[u] == map_auth_consolidate[v] ):
continue
tg.add_edge(map_auth_consolidate[u],map_auth_consolidate[v],time)
tg.add_edge(map_auth_consolidate[v],map_auth_consolidate[u],time)
print(tg)
Nodes: 2838 Time-stamped links: 15650 Links/Nodes: 5.514446793516561 Observation period: [1972, 2021] Observation length: 49 Time stamps: 48 Avg. inter-event dt: 1.0425531914893618 Min/Max inter-event dt: 1/2
#started 15:30
# for vertex in aut_to_classify:
# dict_frequency_2[vertex]=get_frequencies(tg,l=7,n=3000,start_node=vertex,end_nodes=[5000,6000,7000,8000])
#end 18:
# f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictFrequencies2.txt", "w")
# f.write( str(dict_frequency_2) )
# f.close()
f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictFrequencies2.txt", "r")
contents = f.read()
dict_frequency_2 = ast.literal_eval(contents)
f.close()
dict_frequency_3={}
for vertex in largest_cc:
(a,b,c,d)=dict_frequency_2[vertex]
dict_frequency_3[vertex]=(1 if a>=0.9 else 0, 1 if b>=0.9 else 0,1 if c>=0.9 else 0,1 if d>=0.9 else 0)
aut_classified=[[],[],[],[]]
aut_to_classify=[]
for key,value in dict_frequency_2.items():
if value==(0,0,0,0):
aut_to_classify.append(key)
else:
aut_classified[np.argmax(value)].append(key)
min_cat=min(len(aut_classified[0]),len(aut_classified[1]),len(aut_classified[2]),len(aut_classified[3]))
aut_algo_temp=sorted(aut_classified[0], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[0])-set(aut_algo_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[0]=aut_algo_temp
aut_formal_temp=sorted(aut_classified[1], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[1])-set(aut_formal_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[1]=aut_formal_temp
aut_net_temp=sorted(aut_classified[2], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[2])-set(aut_net_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[2]=aut_net_temp
aut_crypto_temp=sorted(aut_classified[3], key=lambda aut:dict_centrality[aut],reverse=True)[0:min_cat]
for aut in list(set(aut_classified[3])-set(aut_crypto_temp)):
dict_frequency_2[aut]=(0,0,0,0)
aut_to_classify.append(aut)
aut_classified[3]=aut_crypto_temp
for aut in aut_classified:
print(len(aut))
415 415 415 415
map_auth_consolidate = {}
for i in range(1,max_v+1):
if (i in aut_classified[0] or i in aut_classified[1] or i in aut_classified[2] or i in aut_classified[3]):
if (i in aut_classified[0]):
map_auth_consolidate[i]=5000
elif (i in aut_classified[1]):
map_auth_consolidate[i]=6000
elif (i in aut_classified[2]):
map_auth_consolidate[i]=7000
else:
map_auth_consolidate[i]=8000
else:
map_auth_consolidate[i]=i
file=open(r"C:\Users\Daniele\Desktop\Graph mining\icalp.tg")
tg=pp.TemporalNetwork()
for line in file:
l=line.split()
u=int(l[0])
v=int(l[1])
time=int(l[2])
if (u in largest_cc and v in largest_cc):
if ( map_auth_consolidate[u] == map_auth_consolidate[v] ):
continue
tg.add_edge(map_auth_consolidate[u],map_auth_consolidate[v],time)
tg.add_edge(map_auth_consolidate[v],map_auth_consolidate[u],time)
print(tg)
Nodes: 1802 Time-stamped links: 10830 Links/Nodes: 6.009988901220866 Observation period: [1972, 2021] Observation length: 49 Time stamps: 48 Avg. inter-event dt: 1.0425531914893618 Min/Max inter-event dt: 1/2
# # #started 02:00
# for vertex in aut_to_classify:
# dict_frequency_3[vertex]=get_frequencies(tg,l=7,n=3000,start_node=vertex,end_nodes=[5000,6000,7000,8000])
# #end
# f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictFrequencies3.txt", "w")
# f.write( str(dict_frequency_3) )
# f.close()
f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictFrequencies3.txt", "r")
contents = f.read()
dict_frequency_3 = ast.literal_eval(contents)
f.close()
dict_classification={}
for vertex in dict_frequency.keys():
if (dict_frequency_3[vertex]==(0,0,0,0)) or (sorted(dict_frequency_3[vertex],reverse=True)[0]- sorted(dict_frequency_3[vertex],reverse=True)[1] <0.2):
dict_classification[vertex]=4
continue
dict_classification[vertex]=np.argmax(dict_frequency_3[vertex])
nc=0
und=0
na=0
nfm=0
ncr=0
nn=0
for v in [ v for v in largest_cc if v not in authors_chosen ]:
if(dict_classification[v]==4):
nc=nc+1
if dict_frequency_3[v]!=(0,0,0,0):
und+=1
continue
if(dict_classification[v]==0):
na=na+1
if(dict_classification[v]==1):
nfm=nfm+1
if(dict_classification[v]==2):
nn=nn+1
if(dict_classification[v]==3):
ncr=ncr+1
print("Non classified authors = "+str(nc)+"\nUndetermined authors = "+str(und)+"\nAlgorithms authors = "+str(na)+"\nFormal methods authors = "+str(nfm)+"\nNetworks authors = "+str(nn)+"\nCryptography authors = "+str(ncr))
Non classified authors = 736 Undetermined authors = 202 Algorithms authors = 1141 Formal methods authors = 698 Networks authors = 457 Cryptography authors = 406
matrix_mvsj=np.load(r"C:\Users\Daniele\Desktop\Graph mining\graphs\icalpw\icalpw2021_mvsMatrixJulia3D.npy")
arr_names=[]
for i in range(np.shape(matrix_mvsj)[1]):
arr_names.append(dict_names[id_cc[i]])
colors=["red","blue","green","yellow","black"]
arr_color=[]
for i in range(np.shape(matrix_mvsj)[1]):
arr_color.append(colors[dict_classification[id_cc[i]]])
fig=go.Figure(data=[go.Scatter3d(x=matrix_mvsj[0],y=matrix_mvsj[1],z=matrix_mvsj[2],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
matrix2d_mvsj=np.load(r"C:\Users\Daniele\Desktop\Graph mining\graphs\icalpw\icalpw2021_mvsMatrixJulia2D.npy")
fig = go.Figure(data=go.Scatter(x=matrix2d_mvsj[0], y=matrix2d_mvsj[1],text=arr_names, mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)))
fig.show()
dist_matrix=np.load(r"C:\Users\Daniele\Desktop\Graph mining\graphs\icalpw\icalpw2021_distMatrix.npy")
# from sklearn.manifold import MDS
# embedding = MDS(n_components=3,dissimilarity='precomputed')
# G_transform = embedding.fit_transform(dist_matrix/np.max(dist_matrix))
#np.save(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixMVSPython.npy",G_transform)
G_transform= np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixMVSPython.npy")
fig=go.Figure(data=[go.Scatter3d(x=G_transform[:,0],y=G_transform[:,1],z=G_transform[:,2],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
matrix_mvsj_leven=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixDissimilarityLevenshtein1MVSPython.npy")
np.shape(matrix_mvsj_leven)
(3458, 3)
fig=go.Figure(data=[go.Scatter3d(x=matrix_mvsj_leven[:,0],y=matrix_mvsj_leven[:,1],z=matrix_mvsj_leven[:,2],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
matrix_mvsj_leven=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixDissimilarityLevenshtein1MVSJulia.npy")
fig=go.Figure(data=[go.Scatter3d(x=matrix_mvsj_leven[0],y=matrix_mvsj_leven[1],z=matrix_mvsj_leven[2],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
# import nltk
# # nltk.download('stopwords')
# from nltk.corpus import stopwords
# lemmer = nltk.stem.WordNetLemmatizer()
# def LemTokens(tokens):
# return [lemmer.lemmatize(token) for token in tokens]
# remove_punct_dict = dict((ord(punct), None) for punct in string.punctuation)
# def LemNormalize(text):
# return LemTokens(nltk.word_tokenize(text.lower().translate(remove_punct_dict)))
# file=open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorsWithPaperTitles.txt")
# dict_auth_titles={}
# stopWords = set(stopwords.words('english'))
# while True:
# auth=file.readline()
# if (auth):
# auth_id=int(auth)
# if auth_id in largest_cc:
# #print(auth_id)
# count=0
# #titles=""
# t=file.readline()
# while(t!="\n"):
# t=t.split("...")[0]
# t=t.replace("-"," ")
# t=re.sub(" \d+"," ",t)
# temp=LemNormalize(t)
# if auth_id in dict_auth_titles.keys():
# dict_auth_titles[auth_id]=dict_auth_titles[auth_id]+[t for t in temp if len(t)>2 and t not in stopWords]
# else:
# dict_auth_titles[auth_id]=[t for t in temp if len(t)>2 and t not in stopWords]
# t=file.readline()
# if len(dict_auth_titles[auth_id])==0 : print(auth_id)
# else:
# titles=""
# t=file.readline()
# while(t!="\n"):
# titles=titles+" "+t
# t=file.readline()
# else:
# break
# titles=[]
# for auth in sorted(dict_auth_titles):
# title=""
# for t in dict_auth_titles[auth]:
# title=title+" "+t
# titles.append(title)
# titles
# from sklearn.feature_extraction.text import TfidfVectorizer
# TfidfVec = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english')
# def cos_similarity(textlist):
# tfidf = TfidfVec.fit_transform(textlist)
# return (tfidf * tfidf.T).toarray()
# matrix=cos_similarity(titles)
# matrix=1-matrix
# np.save(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixTitles.npy",matrix)
# from sklearn.manifold import MDS
# embedding = MDS(n_components=3,dissimilarity='precomputed')
# G_transform = embedding.fit_transform(matrix)
# print(G_transform.shape)
# np.save(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixTitles_mvsPython.npy",G_transform)
matrix_mvsj_cosine_sim=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixTitles_mvsJulia3D.npy")
fig=go.Figure(data=[go.Scatter3d(x=matrix_mvsj_cosine_sim[0],y=matrix_mvsj_cosine_sim[1],z=matrix_mvsj_cosine_sim[2],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
matrix_mvsj_cosine_sim2d=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixTitles_mvsJulia2D.npy")
fig=go.Figure(data=[go.Scatter(x=matrix_mvsj_cosine_sim2d[0],y=matrix_mvsj_cosine_sim2d[1],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
matrix_mvsp_cosine_sim=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixTitles_mvsPython.npy")
fig=go.Figure(data=[go.Scatter3d(x=matrix_mvsp_cosine_sim[:,0],y=matrix_mvsp_cosine_sim[:,1],z=matrix_mvsp_cosine_sim[:,2],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
# dist_matrix=np.load(r"C:\Users\Daniele\Desktop\Graph mining\graphs\icalpw\icalpw2021_distMatrix.npy")
# dist_matrix=dist_matrix/np.max(dist_matrix)
# titles_dissim_matrix=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixTitles.npy")
# combined_matrix=(dist_matrix/2) + (titles_dissim_matrix/2)
#np.save(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixCombined.npy",combined_matrix)
combined_matrix_mvsj=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixCombined_mvsJulia3D.npy")
fig=go.Figure(data=[go.Scatter3d(x=combined_matrix_mvsj[0],y=combined_matrix_mvsj[1],z=combined_matrix_mvsj[2],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
combined_matrix_mvsj2d=np.load(r"C:\Users\Daniele\Desktop\Graph mining\icalpMatrixCombined_mvsJulia2D.npy")
fig=go.Figure(data=[go.Scatter(x=combined_matrix_mvsj2d[0],y=combined_matrix_mvsj2d[1],text=arr_names,mode='markers',marker=dict(
color=arr_color,
size=3,
sizemode='diameter'
)
)])
fig.show()
f = open(r"C:\Users\Daniele\Desktop\Graph mining\icalpAuthorDictFrequenciesAllEdgesNoGiant3.txt", "r")
contents = f.read()
dict_frequency_3_ng = ast.literal_eval(contents)
f.close()
dict_classification_ng={}
for auth in authors_algorithms:
dict_frequency_3_ng[auth]=(1,0,0,0)
for auth in authors_formal_methods:
dict_frequency_3_ng[auth]=(0,1,0,0)
for auth in authors_networks:
dict_frequency_3_ng[auth]=(0,0,1,0)
for auth in authors_cryptography:
dict_frequency_3_ng[auth]=(0,0,0,1)
for vertex in largest_cc:
if (dict_frequency_3_ng[vertex]==(0,0,0,0)) or (sorted(dict_frequency_3_ng[vertex],reverse=True)[0]- sorted(dict_frequency_3_ng[vertex],reverse=True)[1] <0.2):
dict_classification_ng[vertex]=4
continue
dict_classification_ng[vertex]=np.argmax(dict_frequency_3_ng[vertex])
colors=["red","blue","green","yellow","black"]
arr_color_ng=[]
for i in range(np.shape(matrix_mvsj)[1]):
arr_color_ng.append(colors[dict_classification_ng[id_cc[i]]])
fig=go.Figure(data=[go.Scatter3d(x=matrix_mvsj[0],y=matrix_mvsj[1],z=matrix_mvsj[2],text=arr_names,mode='markers',marker=dict(
color=arr_color_ng,
size=3,
sizemode='diameter'
)
)])
fig.show()
fig=go.Figure(data=[go.Scatter3d(x=G_transform[:,0],y=G_transform[:,1],z=G_transform[:,2],text=arr_names,mode='markers',marker=dict(
color=arr_color_ng,
size=3,
sizemode='diameter'
)
)])
fig.show()